package cn.iocoder.yudao.module.blog.convert.ask;

import java.util.*;

import cn.iocoder.yudao.framework.common.pojo.PageResult;

import cn.iocoder.yudao.module.blog.controller.app.ask.vo.AppBlogAskRespVO;
import cn.iocoder.yudao.module.blog.dal.dataobject.asklikeitem.BlogAskLikeItemDO;
import cn.iocoder.yudao.module.blog.dal.dataobject.askresponse.BlogAskResponseDO;
import org.mapstruct.Mapper;
import org.mapstruct.factory.Mappers;
import cn.iocoder.yudao.module.blog.controller.admin.ask.vo.*;
import cn.iocoder.yudao.module.blog.dal.dataobject.ask.BlogAskDO;

/**
 * 学员提问 Convert
 *
 * @author 曹建伟
 */
@Mapper
public interface BlogAskConvert {

    BlogAskConvert INSTANCE = Mappers.getMapper(BlogAskConvert.class);

    BlogAskDO convert(BlogAskCreateReqVO bean);

    BlogAskDO convert(BlogAskUpdateReqVO bean);

    BlogAskRespVO convert(BlogAskDO bean);

    default PageResult<AppBlogAskRespVO> convertAppPage(PageResult<BlogAskDO> page, Map<Long, List<BlogAskResponseDO>> responseMap, Map<Long, List<BlogAskLikeItemDO>> likeMap){
        if ( page == null ) {
            return null;
        }

        PageResult<AppBlogAskRespVO> pageResult = new PageResult<AppBlogAskRespVO>();


        List<AppBlogAskRespVO> list1 = new ArrayList<AppBlogAskRespVO>( page.getList().size() );
        for ( BlogAskDO blogAskDO : page.getList() ) {
            list1.add(convertApp(blogAskDO, responseMap.get(blogAskDO.getId()), null));
        }

        pageResult.setList( list1);
        pageResult.setTotal( page.getTotal() );

        return pageResult;
    }

    default AppBlogAskRespVO convertApp(BlogAskDO bean, List<BlogAskResponseDO> responseList, List<BlogAskLikeItemDO> likeList){
        if ( bean == null ) {
            return null;
        }

        AppBlogAskRespVO blogAskRespVO = new AppBlogAskRespVO();

        blogAskRespVO.setTitle( bean.getTitle() );
        blogAskRespVO.setContent( bean.getContent() );
        blogAskRespVO.setPicUrl( bean.getPicUrl() );
        blogAskRespVO.setClassity( bean.getClassity() );
        blogAskRespVO.setId( bean.getId() );
        blogAskRespVO.setMemberId( bean.getMemberId() );
        blogAskRespVO.setMobile( bean.getMobile() );
        blogAskRespVO.setNickname( bean.getNickname() );
        blogAskRespVO.setAvatar( bean.getAvatar() );
        blogAskRespVO.setLikeNum( bean.getLikeNum() );
        blogAskRespVO.setReadNum( bean.getReadNum() );
        blogAskRespVO.setIsTop( bean.getIsTop() );
        blogAskRespVO.setCreateTime( bean.getCreateTime() );

        blogAskRespVO.setResponseList(responseList);
        blogAskRespVO.setLikeList(likeList);

        return blogAskRespVO;
    }

    List<BlogAskRespVO> convertList(List<BlogAskDO> list);

    PageResult<BlogAskRespVO> convertPage(PageResult<BlogAskDO> page);

    List<BlogAskExcelVO> convertList02(List<BlogAskDO> list);

}
